Flights Search

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for information retrieval. In one aspect, a method includes receiving a search query in a search interface; determining that the received search query is a flights-related query; and in response to determining that the search query is a flights-related query and without further user input, providing a flight search interface including a plurality of search dimensions and a plurality of flight search results, each dimension associated with an attribute of flight search and each dimension having an associated value, wherein one or more dimension values correspond to values extracted from the search query, and wherein the plurality of flight search results are filtered according to the dimension values.

BACKGROUND

This specification relates to information retrieval.

Users can use various web sites to plan travel. Conventionally, a usernavigates to either a web site corresponding to a particular provider(e.g., a specific airline) or to a web based travel site that providesaccess to several different providers. Once the user has identified anitinerary for travel, they can typically purchase the itinerary directlythrough the web site.

SUMMARY

This specification describes technologies relating to informationretrieval.

In general, one aspect of the subject matter described in thisspecification can be embodied in methods that receiving a search queryin a search interface; determining that the received search query is aflights-related query; and in response to determining that the searchquery is a flights-related query and without further user input,providing a flight search interface including a plurality of searchdimensions and a plurality of flight search results, each dimensionassociated with an attribute of flight search and each dimension havingan associated value, wherein one or more dimension values correspond tovalues extracted from the search query, and wherein the plurality offlight search results are filtered according to the dimension values.Other embodiments of this aspect include corresponding systems,apparatus, and computer programs recorded on computer storage devices,each configured to perform the operations of the methods.

These and other embodiments can optionally include one or more of thefollowing features. One or more of the plurality of dimensions can beassociated with default values. Determining that the received searchquery is a flights-related query can be based on processing the receivedsearch query. One or more of the values associated with the dimensionscan be adjustable based on user input. The method can further includereceiving user input adjusting one of the default values; andautomatically updating the flight search results in response to the userinput.

Determining that the received search query is a flights related querycan include identifying one or more keywords associated with flightqueries. Flight search results are automatically updated in response tofurther user input modifying one or more dimension values. The methodcan further include: providing a link to one or more third party bookingsites in response to a user selection of one or more flight searchresults.

The flights search interface can include a dimensions portion and aflight search results portion. The dimensions portion can include aninteractive map and the user can modify an origin or destination valuethrough a map input. The dimensions portion can include a flightsscatterplot displaying flights with respect to a pair of dimensions. Themethod can further include: receiving a user input modifying a markerposition associated with one or more of the pair of dimensions in thescatterplot; and updating flight search results according to flightswithin the region of the scatterplot demarcated by the user input. Afirst dimension of the pair can be a price and a second dimension of thepair can be a duration. T

he method can further include: receiving a user input selecting aparticular flight search result; and in response to the selection,presenting one or more associated return flight search results.Presenting the one or more associated return flight search results caninclude displaying the one or more associated return flight searchresults inline below the selected flight search result. A user selectionof a flight search result and a return flight search result can identifya selected itinerary.

The plurality of dimensions can include an automatically-computedmaximum duration limit and an automatically-computed maximum pricelimit. The maximum duration limit and the maximum price limit can beautomatically updated in response to further user input modifying one ormore dimension values. The method can further include: presenting a userinterface element that, when selected by a user, causes additionalsearch results to be displayed. The method can further include: inresponse to a user input selecting the user interface element, adjustingat least one of the maximum duration limit and the maximum price limit,wherein the additional search results satisfy the adjusted maximumduration and price limits.

In general, another aspect of the subject matter described in thisspecification can be embodied in methods that include the actions ofproviding a flight search interface including a plurality of searchdimensions, each dimension associated with an attribute of flight searchand a value of each dimension being configurable by a user, the flightsearch interface including a dimensions portion and a flights searchresults portion, the dimension portion including a flights scatterplotdisplaying flights with respect to a pair of dimensions; receiving userinput specifying one or more dimension values; and providing flightsearch results that are filtered according to the dimension values.Other embodiments of this aspect include corresponding systems,apparatus, and computer programs recorded on computer storage devices,each configured to perform the operations of the methods.

These and other embodiments can optionally include one or more of thefollowing features. Flight search results can be automatically updatedin response to further user input modifying one or more dimensionvalues. The method can further include: providing a link to one or morethird party booking sites in response to a user selection of one or moreflight search results. The method can further include: replacing, in thedimensions portion, the flight scatterplot portion with an interactivemap in response to a user input selecting a user interface elementassociated with the interactive map, wherein the user can modify anorigin or destination value through a map input to the interactive map.

The method can further include: receiving a user input modifying amarker position associated with one or more of the pair of dimensions inthe scatterplot; and updating flight search results according to flightswithin the region of the scatterplot demarcated by the user input. Afirst dimension of the pair can be a price and a second dimension of thepair can be a duration.

The method can further include: receiving a user input selecting aparticular flight search result; and in response to the selection,presenting one or more associated return flight search results.Presenting the one or more associated return flight search results caninclude displaying the one or more associated return flight searchresults inline below the selected flight search result. A user selectionof a flight search result and a return flight search result identifies aselected itinerary.

The plurality of dimensions can include an automatically-computedmaximum duration limit and an automatically-computed maximum pricelimit. The maximum duration limit and the maximum price limit can beautomatically updated in response to further user input modifying one ormore dimension values. The method can further include: presenting a userinterface element that, when selected by a user, causes additionalsearch results to be displayed. The method can further include: inresponse to a user input selecting the user interface element, adjustingat least one of the maximum duration limit and the maximum price limit,wherein the additional search results satisfy the adjusted maximumduration and price limits.

Particular embodiments of the subject matter described in thisspecification can be implemented so as to realize one or more of thefollowing advantages. Flight searches can be performed by extractingsearch dimensions from a user submitted query, which allows forexpressive queries. Search results can be dynamically updated inresponse to user modifications to dimensions providing quick updates tostreamline searching. Default filtering can also streamline results byremoving duplicate codeshares and hiding options unlikely to be selectedby users.

Users can use the flight search interface to explore flight options, forexample, through map selections. Maximum price and duration limits forthe search results can be automatically computed so that a manageablenumber of search results are initially presented. The maximum price andduration limits can be automatically adjusted in response to usermodifications of dimensions so that a user modification does not resultin an unreasonably large number of search results being displayed. Userscan easily modify the price and duration limits, for example, to viewadditional search results that are not displayed or to view a smallernumber of results.

Users can interact with a travel calendar and an associated travel graphto allow users having travel flexibility to easily view prices for tripsof varying lengths and departure and arrival dates. Users can interactwith a map to easily identify potential destinations from a specifiedorigin location, and to easily determine which of those potentialdestinations are accessible given the currently specified dimensionvalues. Users can interact with a scatterplot to easily visualize theprices and durations of flight options that satisfy the currentlyspecified dimension values, as well as prices and durations of flightoptions that do not satisfy one or more of the dimension values. Flightoptions can be presented in a dense and easily navigable form, e.g., asa single row of data per flight. Additionally, using a hierarchicalpresentation of round trip itineraries that groups outbound flights andthen expands inline to show return flights reduces the number of resultsthat a user needs to consider in making flight decisions.

The details of one or more embodiments of the subject matter describedin this specification are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages of thesubject matter will become apparent from the description, the drawings,and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow diagram of an example process for flight searching.

FIG. 2 is an example flight search interface.

FIG. 3 is an example flight search interface that includes a searchresults portion.

FIG. 4 is an example flight search interface that includes filteredsearch results.

FIG. 5 is an example flight search interface that includes a travelcalendar.

FIG. 6 is an example flight search interface that includes a flightsscatterplot.

FIG. 7 is an example flight search interface that includes a flightsscatterplot.

FIG. 8 is a portion of an example flight search interface that includesreturn flights.

FIG. 9 is a portion of an example flight search interface that includesa including a booking link.

FIG. 10 is a portion of an example flight search interface that includesa synthetic row.

FIG. 11 is an example flight search interface that includes an addresults element.

FIG. 12 is an example flight search interface that includes an addresults element.

FIG. 13 is an example flight search interface including a cheapestflight link.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

A flight search interface is provided in response to a user input in asearch interface. For example, a user search query can be identified asa flights-related query or a user can select a flights option in thesearch interface. The user can use the flight search interface toexplore itinerary options. An itinerary, particularly a flightitinerary, is a collection of one or more flight segments that the usercan purchase. In particular, an itinerary identified through the flightsearch interface can be passed on to a booking site for purchase.

A flight segment is a specific nonstop flight. A user can take multiplesegments to get between an origin and a destination. The origin is thecity or airport from which the user begins a journey. The destination isa city to which the user stops, but is not a temporary transit pointbetween segments. A multicity itinerary can have multiple destinations.

A routing between the origin and destination locations is a leg. Thus, around trip ticket contains two legs, one in each direction. Each leg caninclude multiple segments. For example, a leg for a user flying from SanFrancisco to Tel Aviv can include a first segment from San Francisco toLos Angeles and a second segment from Los Angeles to Tel Aviv.

The flight search interface presents flight information based on anumber of different dimensions. Each dimension can be filtered toprovide itineraries that contain particular dimension values. A user canexplore flights using a map presented within the flight search interfacethat allows the user to view initial information about a number ofdifferent destinations from a specified origin.

In some implementations, based on user input of an origin anddestination, flight search results are presented within the flightsearch interface. These flight search results can be dynamically updatedas the user edits dimension values. In particular, in someimplementations, a price duration scatterplot presents all flightsmatching given criteria. The user can adjust position markers to confineresults to a particular range of flight durations and prices. Thepresented search results are updated in response to the adjustments.Once a user has selected a particular itinerary, the user can select alink to a third-party provider in order to complete the transaction.

FIG. 1 is a flow diagram of an example process 100 for flight searching.For convenience, the process 100 will be described with respect to asystem including one or more computing devices that performs the process100.

The system receives 102 a flight-related search query. For example, theuser can input the search query in a search field of a search interface.The search query can be processed to determine whether or not the searchquery is a flight-related query. For example, keywords in the query orparticular query phrases can be used to identify the search query as aflight-related query. Example keywords can include “flights” as well asthe names of cities or airport codes (e.g., “SFO” for San FranciscoInternational Airport). Additionally, linking cities or airport codeswith “to” or “from” can indicate a flights-related query, for example,“flights from SFO to LHR”.

The received flight-related search query optionally triggers a flightsearch answer box (e.g., a OneBox) module. The system provides 104 theflight search answer box with search results obtained in response to thequery. Answer box modules display specially formatted information whentriggered in response to particular types of queries (e.g., movies,weather, or music). For example, if the user's query refers to weatherin a particular location, the answer box can include a forecast ofweather in the particular location. An answer box has a category that isone of a predefined group of categories, and is formatted according to atemplate specific to its category. An answer box can also be associatedwith code that defines how content for the answer box is obtained. Thecode can be, for example, scripts or code identifying a back end serverfrom which the content is received.

The flight search answer box can include summary flight informationresponsive to the query, for example, a typical or lowest price, anumber and duration of flights, airlines serving the particular route,as well as third party destinations from which a flight can bepurchased.

The system provides 106 a flight search interface in response to a userinput. In some implementations where an answer box is presented, theanswer box includes a link selectable by the user to enter the flightsearch interface.

In some other implementations, regardless of whether a flights searchanswer box is provided, search results obtained in response to the queryterms are presented. However, the search results page can include aselectable flights tab (e.g., tabs in a search interface for topicspecific searches, for example, images, news, books, shopping, blogs). Auser selection of the flights tab triggers presentation of the flightsearch interface. Alternatively, in some other implementations, when auser submits a search query identified as a flight search query, thesystem automatically, e.g., without any further user input aftersubmitting the search query, presents the flight search interfacewithout providing intermediate search results.

The presented flight search interface can be automatically populatedwith information extracted from the flights search query. For example,if the received query is “flights from SFO to LHR” the query can beinterpreted as having an “Origin: SFO” and a “Destination: LHR.” Thisorigin and destination can be prepopulated into the flight searchinterface, i.e., displayed in the flight search interface withoutadditional user input when the interface is initially presented to theuser. Alternatively, the query “flights from SFO” only prepopulates theorigin. In some implementations, a query includes multiple dimensionsthat are parsed to populate corresponding dimension values allowing theuser to input more expressive queries, for example: “nonstop flightsfrom ZRH to somewhere <4 hours away, leaving on a Friday after 6 pm,returning that Sunday after 7 pm.” Additionally, the presented flightsearch interface can include flight search results that satisfy thedimension values extracted from the flight search query. For example,for the query “flights from SFO to LHR,” in addition to prepopulatingthe origin and destination, the flight search interface can beprepopulated with flight search results that identify flights having anorigin of SFO and a destination of LHR. As will be discussed in moredetail below, the flight search results may also satisfy one or moredefault values of other dimensions and can be automatically updated inresponse to a user input adjusting one or more of the dimension values.The flight search interface includes other dimensions having values thatcan be modified by the user. These modifications can be used to identifyresults filtered to those values of the dimensions. Dimensions areproperties of a flight itinerary. Dimensions include, for example,flight origin and destination, departure and arrival dates and times,airlines, flight numbers, flight time, trip length, connecting airports,classes of service, number of stops, and baggage fees.

In some implementations, some dimensions are initially hidden in theflight search interface. These dimensions can be presented, for example,in response to a user input requesting display of additional dimensions.In some implementations, dimensions are grouped according to particularcriteria.

For example, primary dimensions can include an origin, destination,departure date, return date, maximum price, and maximum duration. Theprimary dimensions can be presented together in a particular location ofthe flights search interface. For example, the primary dimensions can bepositioned prominently in the flight search interface as the ones mostlikely to be modified by users to filter flight search results.

Secondary dimensions can include airlines, groups of airlines (e.g.,OneWorld, SkyTeam, and Star Alliance), stops, connecting airports,outbound times, and return times. In some implementations, because thesesecondary dimensions are less often modified by users to filter flightsearch results, they can be positioned in a different location in theflight search interface from the more-frequently modified primarydimensions.

Other dimensions can be hidden initially, but expanded upon userrequest, for example, class of service, availability of Wi-Fi service,number of bags allowed as carry-on or checked luggage, bag check fees,in-seat entertainment, and airline quality ratings.

The system can use default values for one or more dimensions. Inparticular, in some implementations, default values are selected toconstrain the results set. For example, dimensions can be filteredaccording to default values for maximum price or duration dimensions(e.g., users may be unlikely to select a flight option that is longerthan a specified amount of time relative to the duration of other flightoptions). In another example, default connections can be limited becauseusers are unlikely to select a flight leg with more than two segments.In some other implementations, default values are used to removecodeshare flights to avoid duplication in search results.

FIG. 2 is an example flight search interface 200. The flight searchinterface 200 includes a search query input field 202 and a dimensionsportion 204. The dimensions portion 204 includes primary dimensions 212,secondary dimensions 214, and map 216. The map 216 can be used tospecify the origin and destination dimensions. Alternatively, the originand destination can be entered directly into an origin field 206 and adestination field 208, respectively.

In the illustrated example, the origin has been specified as “SanFrancisco (SFO).” In some implementations, the origin field 206 has beenprepopulated because the user interface 200 was provided in response toreceiving a search query seeking information about flights originatingfrom San Francisco or, more specifically, San Francisco InternationalAirport, which has the airport code SFO. For example, the receivedsearch query may have been “flights from SFO” or “flights from SanFrancisco.” Alternatively, a user may have entered the origin directlyinto the origin field 206. For example, the user may have selected aflights tab, e.g., flights tab 216, on a search engine interface, whichresulted in the flight search interface 200 being provided without anyprepopulated origin or destination information.

To assist a user in entering a destination location, a drop-down box ispresented that includes popular destinations 210. The drop-down box isdisplayed as an overlay to the interface. In some implementations, thepresentation of the drop-down box can be triggered by a user inputselecting the destination field 208. Alternatively, the presentation ofthe drop-down box may be triggered when a user completes the input ofthe origin into the origin field 206.

The popular destinations 210 may be particular to the specified originlocation. For example, the popular destinations may be the locationshaving the most non-stop flights from the origin location, the locationsthat are most frequently the destination of purchased itinerariesoriginating from the origin location, or the locations most frequentlyincluded in the same flight-related query as the origin location.

In some implementations, once the user has begun to input a destinationlocation, the drop down box displays additional information to assistthe user in selecting a correct location. For example, the drop down boxcan offer input suggestions of potential destinations that match theuser input. Additionally, the drop down box can present names ofairports that are nearby the location entered by the user as well as thedistance of each airport from the location. The user can then select oneor more of the presented airports to specify the destination location.For example, if the user input is “bos” the drop down box can display asuggestion “Boston, Mass.” or “Boston, Mass. Logan InternationalAirport.” In another example, if the user input is a street address,e.g., “12345 Main Street, New York, N.Y.,” the drop down box can displayone or more airport names and the distance from the address to theairport, e.g., “La Guardia International Airport, 22 miles” and “John F.Kennedy International Airport, 30 miles.”

Other primary dimensions 212 include departure and return dates, price,and duration. For example, the user can enter specific dates intorespective fields for departure and return. Alternatively, selecting thefield can trigger presentation of a calendar (e.g., as an overlay to theinterface) allowing a user to select a specific date. In someimplementations, the user further specifies a time or time range for thedeparture and return. The price dimension can allow direct user input orselection of ranges or maximum/minimum prices from, for example, dropdown menus. Alternatively, editing price and duration can be performedusing a flights scatterplot described below with respect to FIGS. 3-4.

The map 216 includes indicators of particular destinations 218, shown inthe map 216 as dots. The dots are optionally displayed with anassociated price, the associated price indicating the price of a tripfrom the currently selected location city to the destination (e.g., alowest determined price). The currently input values for origin anddestination can be indicated within the map 216, e.g., with particularmarkers. For example, the origin can be indicated with a marker 220indicating a departure. In some implementations, the destinations 218are major destinations, e.g., cities that have populations exceeding athreshold or cities that have been identified as tourist attractions. Insome other implementations, the destinations 218 correspond to populardestinations from the selected origin location, e.g., the destinationsthat are the destination of the most outbound flights from the selectedorigin or the cities that most frequently appear in the same flightsearch query as the selected origin.

The destinations shown on the map can be adjusted in response to userinput. For example, in response to a user input modifying the specifiedorigin location, the particular destinations shown on the map can alsobe adjusted to, e.g., to show popular destinations from the newspecified origin location instead of the old origin location.Additionally, in some implementations, a user can interact with the mapto increase or decrease a level of zoom. In response to the userinteraction, the particular destinations shown on the map can beadjusted. For example, in response to a user input zooming the map in,i.e., causing the map to only display a smaller portion of the UnitedStates, smaller or less-popular destinations that are not currentlydisplayed may be indicated on the map. Conversely, in response to a userinput zooming the map out to display multiple continents, smallerdestinations within the United States may no longer be shown, andpopular destinations on other continents may be added.

The map 216 can be used to explore potential destinations. For example,if only an origin location is specified, the user can select adestination directly within the map 216 for which corresponding flightsearch results 208 can be displayed in a search results portion of theinterface, For example, selection of a particular dot on the map 216 canautomatically populate the destination field, which can then be used togenerate corresponding search results.

Additionally, in some circumstances, user input in the destination inputfield 208 can cause the level of zoom of the map 216 to change to allowthe user to effectively select a destination location. For example, ifthe user enters a location into the destination input field 208 that ison a higher level of granularity than a city, the map can, eitherautomatically or in response to a user input selecting a map indicator230, be adjusted to only display cities or airports within thedestination location. An input that is on a higher level of granularitythan a city can be, for example, a state (e.g., California or Florida),a country (e.g., Japan or Spain), or a region (e.g., the San FranciscoBay Area or the Middle East). Thus, by interacting with both thedestination input field 208 and the map 216 the user can easily selectparticular destination cities or airports within their specifiedlocation.

In some implementations, when a user places a cursor over a dot in themap 216, information is presented about the destination (e.g., as a tooltip or pop-up). The information can include a name of the destination orother destination information. Additionally, a selected destination canalso result in additional destination information being presented withinthe map 216. This information can include, for example, a description ofthe destination city, images, weather, time zone, and distance from theairport to the city.

While the above map functionality has been described with respect todisplaying potential destinations of a trip from a particular origin, insome implementations, if the user specifies a destination withoutspecifying an origin, the user can interact with the map 216 to selectan origin. For example, the map 216 can include potential origins havingflights to the specified destination.

The secondary dimensions 214 include a number of different dimensionsand options for specifying values or value ranges for the dimensions.For example, the number of stops can be selected as any, 0, 1, or 2 ormore. In another example, an airline dimension allows the user tospecify any airline, selected airline groups, or specific individualairlines. In some implementations, selecting “specific airlines . . . ”causes an expanded list to be presented, for example, within thesecondary dimensions 214 or in a pop-up or overlay list (e.g., withcheckboxes for each airline). Other secondary dimensions 214 can also becustomized, for example, connection locations, and outbound and returntimes.

If the user selects a value for a secondary dimension 214, e.g., byclicking on the value with an input device, the search results 208 arefiltered according to the selection. In some implementations, eachsecondary dimension 214 is given the broadest value by default. Theselected value can be indicated visually. For example, in the flightsearch interface 200, the selected values for secondary dimensions 214are presented in bold.

FIG. 3 is an example flight search interface 300 that includes a searchresults portion 314. In the flight search interface 300 a destinationlocation of “Boston” has been specified, e.g., by way of userinteraction with a map 316 or by direct user input into a destinationinput field 302. As a result, the map 316 includes an origin marker 306and a destination marker 308. The origin and destination markers areconnected on the map with a line segment and are visually distinct toindicate that one represents the origin and the other the destination ofa potential trip. A user may select a different origin or destinationlocation by, for example, selecting one of the destinations indicated bya dot on the map 316.

The search results portion 314 includes a sortable list of searchresults 316 that satisfy the specified dimensions. The search results316 can be sorted according to different sorting criteria 318.Specifically, the search results portion 306 includes sortable columnsfor departure time, duration, arrival time, airline, connections, andround trip price. The search results 316 include the correspondinginformation, if any. For example, direct flights do not have anyconnections.

Each search result of the search results 316 can be presented as asingle row of information. As such, the information for each flightrepresented by one of the search results can provide limited informationthat allows a user to make a decision about the flight while alsoallowing the different flight options to be easily navigated. Forexample, a given flight option shown in the search results 316 can belimited to departure time, arrival time, airline, connections, and pricewhile avoiding other information that is less useful in searching forflights e.g., flight number.

In response to the user input identifying the destination location,maximum price limit 310 and maximum duration limit 312 are automaticallycomputed and displayed. Each of the search results 316 satisfies themaximum price and duration limits. Thus, the maximum price and durationlimits may be calculated, for example, in such a way as to ensure that amanageable number of search results that are likely to be attractive tothe user are displayed. If a user adjusts a dimension through the flightinterface 300, the maximum price and duration limits may automaticallybe re-calculated and the new values of the limits displayed. In someimplementations, automatically calculating the price and duration limitsmay cause flights from certain airlines or the cheapest possible flightto not initially be displayed. In these implementations, the interface300 can include elements that allow a viewer to easily view theseomitted flights. These elements will be described in more detail belowwith reference to FIGS. 12-16.

As shown in FIG. 1, the system receives 108 user input modifyingdimensions. Some dimensions can include fields from which the user candirectly input values. For example, the origin and destination fieldscan allow users to directly type a location city, country, or airportcode. Other dimensions can be represented by drop down menus orselectable options. For example, a number of stops can be selected froma set of displayed options (e.g., 0 stops, 1 stop, or 2+ stops). Otherdimensions can include multiple forms of input. For example, entering adate of travel can be a direct input or can trigger a calendarrepresentation from which the user can select a particular date.

In some implementations, user input modifying dimensions are providedthrough an additional graphical representation. For example, dimensionsfor modification can be presented using a map representation, apresented flights scatterplot, a travel calendar, or a graph portionassociated with the travel calendar.

The system provides 110 filtered results. In particular flights arefiltered according to the values of each dimension. The provided resultscan be presented in a list in the flights search interface. In someimplementations, only the outbound flights are initially presented.These flights can be ordered according to different user selectablecriteria. For example, the flights can be listed by departure timeinitially, but can be sorted, for example, by arrival time, airline,connections, and round trip price (if a round trip flight is selected).

The user can make further modifications to one or more dimensions. Thesearch results are updated according to the modifications. Inparticular, the results can be filtered and presented dynamically as theuser changes dimension values.

Flight search results can be identified by a search system thatidentifies potential flight itineraries responsive to a submitted query.The values of the dimensions can act as restrictions or additionalcomponents of the query. The search system can use the receivedinformation from the flights search interface to identify responsiveflight search results. Specific flight information can be searched, forexample, based on scheduling and fare rules information provided by theairlines and, in some implementations, through one or moreintermediaries.

FIG. 4 is an example flight search interface 400 that includes filteredsearch results 412. In the flight search interface 400, a user hasmodified the value of a number of stops dimension 402 to indicate thatthe user is only interested in nonstop flights. In response to themodification, the maximum price limit 408 and the maximum price limit410 have been automatically adjusted. Additionally, the appearance ofsome of the particular locations identified by dots on a map 404 hasbeen altered to indicate that no flights exist to that destination thatsatisfy the new dimension values, i.e., the new value of the number ofstops dimension and the new values of the maximum price and durationlimits. For example, because no flights could be identified between SanFrancisco and Omaha that are nonstop and have a duration of less than 8hours, the appearance of the dot 406 representing Omaha has been alteredto make the dot visually distinct from those dots representing locationsto which nonstop flights from San Francisco lasting less than 8 hoursare available (e.g., an empty circle for unavailable destinationscompared to a filled-in dot for available destinations).

Additionally, modified search results 412 are displayed that satisfy themodified dimension values. That is, only search results that representnonstop flights from San Francisco to Boston are displayed.

The interface 400 also includes a calendar user interface element 414and a scatterplot user interface element 416. In response to receivingan input selecting the calendar element 414, a travel calendar can bedisplayed, e.g., in place of the map 404, that allow a user to easilyadjust the values of the departure date and return date dimensions.Similarly, in response to receiving an input selecting the scatterplotelement 416, a scatterplot can be displayed, e.g., in place of the map404, that allows the user to easily adjust the values of the maximumprice and duration limits. When either the scatterplot or the travelcalendar is displayed, a map user interface element can be displayed inplace of the user interface element associated with the scatterplot orthe travel calendar. In response to receiving an input selecting the mapelement a map can be displayed, e.g., in place of the scatterplot or thetravel calendar.

FIG. 5 is an example flight search interface 500 that includes a travelcalendar 502. The travel calendar portion 502 includes a calendarportion 504 and an associated graph portion 506.

The calendar portion 504 displays a range of travel dates that includesthe specified departure and return dates. For example, the calendarportion 504 can include a date box for each day in a two-month daterange that includes the selected departure and return dates. The tripdefined by the departure and return dates, i.e., the trip beginning onthe departure date and ending on the return date, is denoted within thecalendar portion 504 by a highlighted portion 508. The user can interactwith the highlighted portion, e.g., by dragging the highlighted portionto different dates within the calendar portion or by increasing ordecreasing the length of the highlighted portion to adjust the departureand return dates.

In order for the user to easily view the prices of trips starting ondifferent dates in the range, the graph portion 506 displays, for eachof the days in the range, a trip starting on that date and having aduration equal to the duration of the trip defined by the departure andreturn dates. If the user alters the trip duration, e.g., by interactingwith the highlighted portion 508 to change the departure or return date,the prices displayed in the graph portion 506 are adjusted to showprices for trips having a duration equal to the new duration. Thus, byinteracting with the calendar portion 504 and the graph portion 506, auser is able to easily identify the impact of scheduling their travelfor various dates within the range of dates. Additionally, in responseto a user input to either the calendar portion 504 or the highlightedportion 508 changing the specified departure date, return date, or both,the flight search results 510 are modified to only show flight searchresults satisfying the newly specified dimensions.

FIG. 6 is an example flight search interface 600 that includes a flightsscatterplot 602. The flights scatterplot 602 provides a visualrepresentation of the fights space as a function of price and duration(e.g., indicated on respective axes of the flights scatterplot 602).Each dot in the flights scatterplot 602 corresponds to a flight thatsatisfies the dimensions of the flight search interface 600. Inparticular, flights from San Francisco to Cincinnati on September 18.Additional visual cues can be provided within the flights scatterplot602 to indicate overlapping flights at a given intersection ofprice-duration, for example, increased dot density or color changes.

Additionally, the flights scatterplot 602 includes slider bars 606 and608. The slider bar 606 allows a user to adjust the maximum price. Theslider bar 608 allows the user to adjust a maximum duration. Thus, asshown in the flight search interface 600, the slider bar 606 is set to amaximum price of $744 and the slider bar 608 is set to a maximumduration of 7 hours and 12 minutes.

Flights in the flights scatterplot 602 within the area 604 formed by thetwo slider bar positions correspond to flights that satisfy the priceand duration limits. In some implementations, the area includes visualcues demarcating the selected area from the full flights scatterplot602, for example, using a bounding box or shading.

Search results 610 present flights from San Francisco to Cincinnati thatsatisfy the dimension values including the defined area of thescatterplot 602. Thus, for example, while a user can visually identifyflights in the scatterplot 602 that exceed their price and durationcriteria, those flights do not appear in the search results 610.However, the slider bars 606 and 608 can be moved to capture additionalflights or fewer flights in the search results 610.

FIG. 7 is an example flight search interface 700 including a flightsscatterplot 702. The flights scatterplot 702 again provides a visualrepresentation of the flights space as a function of price and duration.However, in the flight search interface 700, a user has modified a valueof a number of stops dimension 712. Thus, some dots in an area 704formed by slider bars 706 and 708 correspond to flights that no longersatisfy the dimensions of the search interface 700. In response to themodification, the appearance of the dots has been modified so that thedots within the area 704 that correspond to flights that satisfy eachdimension are visually distinct from dots within the area 704 that donot correspond to flights that satisfy each dimension. In particular,dots that correspond to flights that do not satisfy each dimension arenot filled in on the scatterplot 702, even if they are within the area704.

As shown in the flight search interface 700, the slider bar 706 foradjusting the maximum price is set to a maximum price of $745 and theslider bar 708 for adjusting the maximum duration is set to a maximumduration of 9 hours. The positions of the slider bars 706 and 708 mayhave been automatically updated in response to the user input modifyingthe value of the number of stops dimension, i.e., because new values forthe maximum price and duration were automatically computed as describedabove with reference to FIG. 3.

Search results 710 present flights from San Francisco to Boston thatsatisfy the dimension values including the defined area 704 and thenewly modified number of stops dimension 712. The search results 710 areupdated as the user changes the positions of the slider bars 706 and708. For example, if the user increases one or more of the maximumduration or the maximum price, more flights may satisfy the criteria,e.g., if movement of the slider bars captures another dot or dots in thescatterplot 702. The search results 710 are therefore updated to includethe additional flights. Similarly, if the user decreases one or more ofthe maximum duration or the maximum price, fewer flights may satisfy thecriteria. The search results 710 are updated to include the smallernumber of flights that satisfy the filtered dimensions.

The updating of the search results 710 can be performed dynamicallyafter each adjustment to the scatterplot 702 or to any other dimension.In some implementations, the input to a dimension triggers the updatedresults. In some other implementations, a specified delay withoutfurther user input triggers the updated results (e.g., 3 seconds withoutreceiving further dimension modifications).

In some implementations, a user is able to select a dot within thescatterplot. In response, the appearance of the search result in thesearch results 710 that corresponds to the same flight as the selecteddot can be altered, e.g., the displayed search result can behighlighted, to indicate that the search result corresponds to the sameflight as the selected dot.

As shown in FIG. 1, the system receives 112 a user selection of anitinerary. In some implementations, the user first selects an outboundleg from the presented results. The system then provides one or moresecond legs (e.g., a return leg) based on the selected outbound leg. Thesecond leg can be presented as a popup or overlay to the searchinterface to distinguish the second leg from the search results of theoutbound leg. The user can then select a particular second leg. In somemulticity itineraries, additional legs can then be selected in a similarmanner. The selected legs form an itinerary.

The system directs 114 the user to a selected booking site. Inparticular, a given itinerary can be provided along with one or morelinks to booking sites. Each reference to a particular booking site caninclude the corresponding price for the itinerary. The user can select aparticular booking site. The system then directs the user to acorresponding booking site (e.g., a web page corresponding to theparticular selection). The system further passes on the selecteditinerary to the booking site. The user can then complete the purchaseof the itinerary through the booking site.

FIG. 8 is a portion of an example flight search interface 800 thatincludes return flights. The illustrated example shows a search resultsportion 802 of the flight search interface 804. Other portions, e.g.,those discussed above with reference to FIGS. 2-7, may be displayedabove or below the search results portion 802 in the flight searchinterface 800.

The search results portion 802 includes search results 804 that presentoutbound flights from San Francisco to Cincinnati. The user has selecteda particular flight search result 806. For example, the user can selecta particular flight from the search results 804 using an input device(e.g., a mouse input or touchscreen input).

Selection of the particular flight search result 806 caused presentationof return flight search results 812. In some implementations, an overlayis generated for the return flights over the outbound flights. In someother implementations, the return flight search results 812 are expandedinline such that the remaining outbound flights below the selected oneto be shifted downward so that they are not obscured by the returnflights results. Thus, the user can still view all identified searchresults 804 for outbound flight options.

The return flight search results 812 include search results that satisfythe associated dimensions. Each result can include the same informationas with the outgoing flights including flight departure time, duration,arrival time, airline, connections, if any, and round trip fare for thepair of the selected outbound flight 806 and a given return flight. Alowest round trip fare can also be identified in the return flightsearch results 812.

FIG. 9 is a portion of an example flight search interface 900 thatincludes a including a booking link 912. The illustrated example shows asearch results portion 902 of the flight search interface 900. Otherportions, e.g., those discussed above with reference to FIGS. 2-7, maybe displayed above or below the search results portion 902 in the flightsearch interface 900.

The search results portion 902 includes search results 904 that presentoutbound flights from San Francisco to Cincinnati. A user can select anoutgoing flight and then a return flight in order to create an itinerary910. As shown in the flight search interface 900, the user has selecteda particular outbound flight search result 906. The user has alsoselected a return flight search result 908 from return flight searchresults that were presented in response to the user selection of theoutbound flight search result 906, e.g., the return flight searchresults 812 of FIG. 8.

Once the user has selected a particular itinerary, the user can selectthe booking link 912 in order to be connected to a particular bookingsite in order to purchase the selected itinerary. In someimplementations, a single third party booking site, e.g., a web basedtravel site or the website of the airline operating the flights thatmake up the itinerary, is identified for purchasing the selecteditinerary. Alternatively, in some implementations, links to multiplebooking sites can be presented in response to a user selection of thebooking link 912 along with the corresponding fares for the itinerarythrough each booking site, respectively. Additionally, a booking sitelink can be an advertisement, e.g., a booking provider can purchase theright to have a link to the booking provider's website be shown as abooking link for particular itineraries. In some implementations, abooking site link includes a promotional offer. For example, an airlinemiles bonus, or discount when combined with a hotel or rental carreservation. The booking provider can purchase the ability to advertisethe promotion with the booking link.

Selection of the arrow indicator 914 by the user can trigger apresentation of a user interface element, e.g., a drop down box, thatallows the user to specify additional dimensions, e.g., number ofpassengers, before proceeding to book a fare. Promotional offers canalso be displayed in the user interface element instead of or inaddition to the additional dimensions.

In some implementations, in response to the user selection of thebooking link 912, a new search is performed to confirm the pricing andavailability of the selected itinerary. That is, a new query can beissued to verify that the pricing and availability of the selecteditinerary has not changed from any of the booking sites that have beenidentified for purchasing the selected itinerary. Thus, a user can bealerted to any changes in price or availability of their selecteditinerary before they begin the booking process.

FIG. 10 is a portion of an example flight search interface 1000 thatincludes a synthetic row 1010. The illustrated example shows a searchresults portion 1002 of the flight search interface 1000. Otherportions, e.g., those discussed above with reference to FIGS. 2-7, maybe displayed above or below the search results portion 1002 in theflight search interface 1000. The other portions can include portionsfor specifying primary and secondary dimensions and maximum price andduration limits.

The search results portion 1002 includes search results 1004 thatsatisfy each specified dimension and the maximum price and durationlimits. The search results portion 1002 also includes a synthetic row1010 that indicates that, while flights from additional airlines areavailable that satisfy the specified dimensions, they are not currentlybeing displayed, e.g., because each flight from those airlines exceedseither the currently specified maximum price limit or the currentlyspecified maximum duration limit. The synthetic row 1002 also indicatesa lowest price for flights from those airlines (e.g., that flights startat $490).

A synthetic row can be displayed in a search results portion of a flightsearch interface when the currently selected maximum price and durationlimits have resulted in the exclusion of flight search results that maybe of interest to the user from the displayed flight search results. Forexample, the synthetic row can be displayed when the currently selectedmaximum price and duration limits have resulted in the exclusion of thecheapest flight that satisfies the specified dimensions. Additionally,the synthetic row can be displayed when the currently selected maximumprice and duration limits have resulted in the exclusion of all flightsfrom a particular airline, even though flights from that airline thatsatisfy each dimension have been identified. In some implementations,the synthetic row is only displayed when the currently selected maximumprice and duration limits have been automatically computed, i.e., havenot been adjusted by the user. Alternatively, the synthetic row can bedisplayed regardless of whether at least one of the limits has beenspecified by the user.

The user can select the synthetic portion 1010, e.g., with a cursor ofan input device or with a touch input. In response, the price andduration limits can be adjusted, e.g., set to sufficiently large numbersso that all of the search results satisfying the dimensions aredisplayed.

FIG. 11 is an example flight search interface 1100 that includes an addresults element 1110. The flight search interface 1100 includes a searchquery input field 1102, a dimensions portion 1104, and a search resultsportion 1106. The dimensions portion 1104 includes primary dimensions1112, and secondary dimensions 1114. The primary dimensions include amaximum price limit 1116 and a maximum duration limit 1118. The maximumprice and duration limits have been automatically computed, e.g., basedon the values of the primary dimensions and the other secondarydimensions.

The search results portion 1106 includes search results 1120 thatsatisfy each of the primary dimensions 1112 and each of the secondarydimensions 1114. The search results portion 1106 also includes the addresults element 1110 and text indicating that additional flight searchresults displayed in response to a user selection of the add resultselement 1110 will exceed at least one of the maximum price limit 1116and the maximum duration limit 1118. In response to a user selection ofthe add results element 1110, the maximum price limit and the maximumduration limit can automatically be adjusted so that ten additionalresults that satisfy each of the primary dimensions and each of thesecondary dimensions including the newly computed maximum price andduration limits are displayed. Although a selection of the add resultselement 1110 results in ten additional search results being displayed,in some implementations, the selection can result in a different number,e.g., five, fifteen, or twenty, of additional results being displayed.

FIG. 12 is an example flight search interface 1200 that includes an addresults element 1210. The flight search interface 1200 includes a searchquery input field 1202, a dimensions portion 1204, and a search resultsportion 1206. The dimensions portion 1204 includes primary dimensions1212, and secondary dimensions 1214. The primary dimensions include amaximum price limit 1216 and a maximum duration limit 1218. The maximumprice limit 1216 has been automatically computed. However, the maximumduration limit 1218 has been specified by a user. For example, the usermay have adjusted an automatically computed value of the duration limitby entering an input into the maximum duration limit field 1218 or byinteracting with the arrow indicators associated with the maximumduration limit field 1218.

The search results portion 1206 includes search results 1220 thatsatisfy each of the primary dimensions 1212 and each of the secondarydimensions 1214. The search results portion 1206 also includes the addresults element 1210 and text indicating that additional flight searchresults displayed in response to a user selection of the add resultselement 1210 will exceed the maximum price limit 1216. Because themaximum duration limit 1218 has been specified by the user rather thanautomatically computed, the maximum duration limit 1218 will remainfixed. In response to a user selection of the add results element 1210,the maximum price limit can automatically be adjusted, i.e., increased,to an amount that results in ten additional results that satisfy each ofthe primary dimensions and each of the secondary dimensions includingthe newly computed maximum price limit being displayed. Although aselection of the add results element 1210 results in ten additionalsearch results being displayed, in some implementations, the selectioncan result in a different specified number, e.g., five, fifteen, ortwenty, of additional results being displayed. The additional searchresults can be added, for example, in order of price so that the ten (orother specified number) cheapest search results that satisfy each of theprimary and secondary dimensions and are not already displayed are addedto the search results 1220.

In some implementations, if both the maximum price limit and the maximumduration limit have been adjusted by the user, no add results elementwill be displayed, i.e., because both user-adjusted limits are fixed.

FIG. 13 is an example flight search interface 1300 including a cheapestflight link 1310. The flight search interface 1300 includes a searchquery input field 1302, a dimensions portion 1304, and a search resultsportion 1306. The dimensions portion 1304 includes primary dimensions1312, and secondary dimensions 1314. The secondary dimensions include amaximum price limit 1316 and a maximum duration limit 1318. The maximumprice and duration limits have been automatically computed.

The search results portion 1306 includes search results 1320 thatsatisfy each of the primary dimensions 1312 and each of the secondarydimensions 1314. The search results portion 1306 also includes thecheapest flight link 1310 and text indicating that the cheapest flighthas a duration that exceeds the maximum duration limit 1318. Thecheapest flight link 1310 and the associated text are displayed onlywhen the cheapest flight does not satisfy the maximum duration limit1318. In some implementations, the cheapest flight link 1310 and theassociated text are displayed only when the cheapest flight does notsatisfy the maximum duration limit 1318 and the maximum duration limithas been automatically computed rather than specified by a user.

In response to a user input selecting the cheapest flight link 1310, theduration limit is adjusted so that the cheapest flight satisfies theduration limit and is therefore displayed in the search results 1320. Insome implementations, the price limit may also be adjusted, e.g., theprice limit may be lowered to ensure that a manageable number of searchresults are displayed after the duration limit is increased.

Embodiments of the subject matter and the operations described in thisspecification can be implemented in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Embodiments of the subject matterdescribed in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on computer storage medium for execution by, or tocontrol the operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded on anartificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal, that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. A computer storage medium canbe, or be included in, a computer-readable storage device, acomputer-readable storage substrate, a random or serial access memoryarray or device, or a combination of one or more of them. Moreover,while a computer storage medium is not a propagated signal, a computerstorage medium can be a source or destination of computer programinstructions encoded in an artificially-generated propagated signal. Thecomputer storage medium can also be, or be included in, one or moreseparate physical components or media (e.g., multiple CDs, disks, orother storage devices).

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

The term “data processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), an inter-network (e.g., the Internet), andpeer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someembodiments, a server transmits data (e.g., an HTML page) to a clientdevice (e.g., for purposes of displaying data to and receiving userinput from a user interacting with the client device). Data generated atthe client device (e.g., a result of the user interaction) can bereceived from the client device at the server.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular embodiments of particular inventions.Certain features that are described in this specification in the contextof separate embodiments can also be implemented in combination in asingle embodiment. Conversely, various features that are described inthe context of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be advantageous.

What is claimed is: 1-119. (canceled)
 120. A computer-implemented methodto search for flights from non-customized search engine interfaces,comprising: receiving, by one or more computing devices, a search queryin a search interface, wherein the search interface is configured torespond to general purpose search queries; determining, by the one ormore computing devices, that the received search query is aflights-related query based on context in the search query; and inresponse to determining that the search query is a flights-related queryand without further user input, providing, by the one or more computingdevices, a flight search interface including a plurality of specificflight search results, wherein each specific flight search resultidentifies a specific flight responsive to the query.
 121. Thecomputer-implemented method of claim 120, wherein: providing a flightsearch interface further comprises providing a plurality of searchdimensions, each dimension associate with an attribute of flight searchand each dimension having an associated value, wherein one or moredimension values correspond to values extracted from the search query,and wherein one or more of the plurality of dimensions are associatedwith default values.
 122. The computer-implemented method of claim 120,wherein determining that the received search query is a flights-relatedquery is based on processing the received search query.
 123. Thecomputer-implemented method of claim 121, further comprising: receiving,by the one or more computing devices, user input adjusting one or morevalues in the dimensions portion; and automatically updating, by the oneor more computing devices, the plurality of specific flight searchresults in response to the user input.
 124. The computer-implementedmethod of claim 122, wherein one or more of the values associated withthe dimensions are adjustable based on user input.
 125. Thecomputer-implemented method of claim 120, wherein determining that thereceived search query is a flights-related query includes identifyingone or more keywords associated with flight queries.
 126. Thecomputer-implemented method of claim 120, further comprising providing,by the one or more computing devices, a link to one or more third partybooking sites in response to a user selection of one or more specificflight search results.
 127. The computer-implemented method of claim120, wherein the dimensions portion includes an interactive map andwherein the user can modify an origin or destination value through a mapinput.
 128. The computer-implemented method of claim 120, wherein thedimensions portion includes a flights scatterplot displaying flightswith respect to a pair of dimensions.
 129. The computer-implementedmethod of claim 128, further comprising: receiving, by the one or morecomputing devices, a user input modifying a marker position associatedwith one or more of the pair of dimensions in the scatterplot; andupdating, by the one or more computing devices, the plurality ofspecific flight search results according to flights within the region ofthe scatterplot demarcated by the user input.
 130. Thecomputer-implemented method of claim 120, further comprising: receiving,by the one or more computing devices, a user input selecting aparticular flight search result; and in response to the selection,presenting, by the one or more computing devices, one or more associatedreturn specific flight search results.
 131. The computer-implementedmethod of claim 130, wherein a user selection of a flight search resultand a return flight search result identifies a selected itinerary. 132.The method of claim 120, wherein each specific flight search resultcomprises a flight number.
 133. A system comprising data processingapparatus and one or more storage devices storing instructions that,when executed by the data processing apparatus, cause the system toperform operations comprising: receiving a search query in a searchinterface, wherein the search interface is configured to respond togeneral purpose search queries; determining that the received searchquery is a flights-related query based on context in the search query;and in response to determining that the search query is aflights-related query and without further user input, providing a flightsearch interface a plurality of specific flight search results, whereineach specific flight search result identifies a flight responsive to thequery.
 134. The system of claim 133, wherein providing a flight searchinterface further comprises providing a plurality of search dimensions,each dimension associate with an attribute of flight search and eachdimension having an associated value, wherein one or more dimensionvalues correspond to values extracted from the search query, and whereinone or more of the plurality of dimensions are associated with defaultvalues.
 135. The system of claim 133, wherein determining that thereceived search query is a flights-related query is based on processingthe received search query.
 136. A non-transitory computer storage mediumencoded with a computer program, the program comprising instructionsthat, when executed by data processing apparatus, cause the dataprocessing apparatus to perform operations comprising: receiving anexpressive search query in a search interface, wherein the searchinterface is not customized for flight search inputs from a usercomputing device and the search interface is configured to accept asearch query that is not flight-related; determining that the receivedsearch query is a flights-related query based on context in the searchquery; and in response to determining that the search query is aflights-related query and without further user input, providing a flightsearch interface including a plurality of search dimensions and aplurality of specific flight search results, each dimension associatedwith an attribute of flight search and each dimension having anassociated value, wherein one or more dimension values correspond tovalues extracted from the search query, wherein each specific flightsearch result identifies a flight responsive to the query, and whereinthe plurality of specific flight search results are filtered accordingto the dimension values.
 137. The computer storage medium of claim 136,wherein one or more of the plurality of dimensions are associated withdefault values.
 138. The computer storage medium of claim 136, whereindetermining that the received search query is a flights-related query isbased on processing the received search query.
 139. The computer storagemedium of claim 136, the computer-executable program instructionsfurther comprising computer program instructions to provide a notice tothe user of the refund.